/**
 *
 */
package com.ssyt.examinationsystem.service.impl;

import com.ssyt.examinationsystem.dao.IRightInfoDAO;
import com.ssyt.examinationsystem.dao.IRoleInfoDAO;
import com.ssyt.examinationsystem.dao.impl.RightInfoDAOImpl;
import com.ssyt.examinationsystem.dao.impl.RoleInfoDAOImpl;
import com.ssyt.examinationsystem.entity.RoleInfo;
import com.ssyt.examinationsystem.service.IRoleInfoService;
import com.ssyt.examinationsystem.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author Administrator
 */
public class RoleInfoServiceImpl implements IRoleInfoService {
    IRoleInfoDAO roleDao = new RoleInfoDAOImpl();
    private IRightInfoDAO rightDao = new RightInfoDAOImpl();

    /**
     * 查询所有角色业务的实现方法
     */
    public List<RoleInfo> getRoleInfos() {
        // 调用数据层查询所有角色的方法
        List<Map<String, Object>> list = roleDao.getRoleInfos();
        // 创建一个存放角色对象的集合
        List<RoleInfo> roleList = new ArrayList<RoleInfo>();
        // 判断集合是否为空，并遍历集合
        if (CollectionUtils.isEmptyForList(list)) {
            for (Map<String, Object> map : list) {
                RoleInfo role = new RoleInfo();
                role.setRoleId(Integer.valueOf(String.valueOf(map.get("roleId"))));
                role.setRoleName(String.valueOf(map.get("roleName")));
                roleList.add(role);
            }
        }
        return roleList;
    }

    /**
     * 添加角色信息的声明
     */
    public int addRoleInfo(RoleInfo role) {
        return roleDao.addRoleInfo(role);
    }

    /**
     * 删除角色信息的声明
     */
    public int deleteRoleInfo(String roleId) {
        // 设置返回值
        int flag = 0;

        // 判断该角色是否有权限
        if (rightDao.isGrantByRoleId(roleId)) {
            // 判断是否删除了所有权限
            if (rightDao.deleteGrantByRoleId(roleId)) {
                // 判断角色信息是否删除
                if (roleDao.deleteRoleInfo(roleId) > 0) {
                    flag = 1;
                }
            }
        } else {
            // 判断角色信息是否删除
            if (roleDao.deleteRoleInfo(roleId) > 0) {
                flag = 1;
            }
        }

        return flag;
    }

    /**
     * 根据角色编号获取角色对象
     */
    public Map<String, Object> getRoleByRoleId(String roleId) {

        return roleDao.getRoleByRoleId(roleId);
    }

    /**
     * 修改角色信息
     */
    public int updateRoleInfo(RoleInfo role) {
        return roleDao.updateRoleInfo(role);
    }

}
